/*
 * Senha.java
 * Versão: 1.0
 * Data de Criação : 22/08/2011
 * Copyright (c) 2008-2011 Universidade Estadual de
 * Londrina - UEL.
 * Rodovia Celso Garcia Cid, Cidade Universitária,
 * Londrina, Paraná
 * Brasil
 * Todos os direitos reservados.
 *
 * Este software é de informação confidenciais de
 * propriedade da UEL Univesidade Estadual de Londrina.
 * ("Informações Confidenciais "). Você não poderá
 * compartilhar estas informações por ser de carater
 * confidencial e usará somente em acordo com os termos de
 * licençada UEL
 */
package br.uel.ati.validacao;

import br.uel.ati.encriptacao.MD5;
import br.uel.ati.encriptacao.SHA256;
import java.security.NoSuchAlgorithmException;

/**
 * Esta classe contém os métodos estáticos que validam uma senha. Para utilizá-la,
 * além de fazer o import de "br.uel.ati.validacao.Senha", é necessário apenas
 * chamá-la como no exemplos abaixo.
 * 
 * Caso a senha original esteja encriptada em MD5:
 * Senha.validarMD5("senha_original","valor_a_ser_comparado");
 * 
 * Caso a senha original esteja encriptada em SHA-256:
 * Senha.validarSHA256("senha_original","valor_a_ser_comparado");
 * 
 * Portanto a instanciação desta classe não é necessária.
 * 
 * A senha original deve vir do banco de dados encriptada em MD5 ou SHA256.
 * O valor a ser comparado com a senha original não deve estar encriptado, pois
 * o próprio método de validação se encarrega disso.
 *
 * @author Humberto Ferreira da Luz Junior
 * @version 1.0
 */
public class Senha {

    /**
     * Valida uma palavra comparando-a com a senha armazenada no BD encriptada
     * em MD5.
     *
     * @param senhaAtualEncriptada, Senha encriptada em MD5.
     * @param novaSenhaTextoPuro, Palavra a ser comparada não encriptada.
     * @return Valor booleano que assume o valor "true" caso a senha seja válida
     * e "false" caso seja inválida.
     */
    public static boolean validarMD5(String senhaAtualEncriptada, String novaSenhaTextoPuro) throws NoSuchAlgorithmException {
        return senhaAtualEncriptada.equals(MD5.encriptar(novaSenhaTextoPuro));
    }

    /**
     * Valida uma palavra comparando-a com a senha armazenada no BD encriptada
     * em SHA-256.
     *
     * @param senhaAtualEncriptada, Senha encriptada em SHA-256.
     * @param novaSenhaTextoPuro, Palavra a ser comparada não encriptada.
     * @return Valor booleano que assume o valor "true" caso a senha seja válida
     * e "false" caso seja inválida.
     */
    public static boolean validarSHA256(String senhaAtualEncriptada, String novaSenhaTextoPuro) throws NoSuchAlgorithmException {
        return senhaAtualEncriptada.equals(SHA256.encriptar(novaSenhaTextoPuro));
    }
}